﻿using System;
using System.Windows.Forms;

namespace clasesBase
{
    public partial class FrmAyudaContextual : Form
    {
        private string[] columnasMostrarGrilla = new string[] { };
        protected string[] columnasFiltrar = new string[] { };
        protected string[] valoresFiltros = new string[] { };
        private DataGridViewRow filaSeleccionada = null;
        protected string tablaBD;

        public DataGridViewRow FilaSeleccionada
        {
            get { return filaSeleccionada; }
        }

        protected void setearDatos(string[] columnasGrilla, string nombreTablaBD, string[] columnasAFiltrar, string[] valoresDeFiltros)
        {
            this.columnasMostrarGrilla = columnasGrilla;
            this.tablaBD = nombreTablaBD;
            this.columnasFiltrar = columnasAFiltrar;
            this.valoresFiltros = valoresDeFiltros;
        }

        public FrmAyudaContextual()
        {
            InitializeComponent();
        }

        private void definirGrillaDatos()
        {
            DataGridViewCell celda = new DataGridViewTextBoxCell();
            grillaDatos.Columns.Clear();
            int cantColumnas = columnasMostrarGrilla.Length;
            for (int indiceCol = 0; indiceCol < cantColumnas; indiceCol++)
            {
                DataGridViewColumn columna = new DataGridViewColumn(celda);
                columna.HeaderText = columnasMostrarGrilla[indiceCol];
                columna.Name = Validador.quitarCaracteresEspeciales(columnasMostrarGrilla[indiceCol]);
                columna.DataPropertyName = Validador.quitarCaracteresEspeciales(columnasMostrarGrilla[indiceCol]);

                grillaDatos.Columns.Add(columna);
            }

            grillaDatos.AutoGenerateColumns = false;
        }

        protected void grillaDatos_KeyDown(object sender, KeyEventArgs e)
        {
            // Si presiona la tecla Enter
            if (e.KeyCode == Keys.Enter)
            {
                e.SuppressKeyPress = true;
                this.btnAceptar.PerformClick();
            }
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            if (grillaDatos.Rows.Count > 0) filaSeleccionada = grillaDatos.CurrentRow;
            else filaSeleccionada = null;
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            filaSeleccionada = null;
        }

        protected void AyudaCompletar_Load(object sender, EventArgs e)
        {
            definirGrillaDatos();
            /* ¡¡¡IMPORTANTE!!! No olvidar esta sentencia ya que es la que le da foco a la grilla cuando se termina de cargar
             * el formulario y de otra manera, el usuario debe hacer click sobre la grilla o usar el tabulador para que ésta
             * tome el foco y se pueda desplazar libremente por la misma.*/
            grillaDatos.Select();
        }

        protected void ajustarAnchoFormulario()
        {
            int sumaAnchoColumnas = 0;
            foreach (DataGridViewColumn columna in grillaDatos.Columns)
                sumaAnchoColumnas += columna.Width;

            if (this.Width < sumaAnchoColumnas)
            {
                grillaDatos.Width = sumaAnchoColumnas;
                this.Width = sumaAnchoColumnas + 20; // Los 20 representan un poco de margen para el formulario
            }
        }
    }
}
